package dataStructure;

import java.io.Serializable;
import java.util.ArrayList;

public abstract class Path<N> implements Serializable {

	private static final long serialVersionUID = -3080565755918339668L;

	// get

	public abstract int start();

	public abstract int end();

	public abstract long visited();

	public abstract boolean isVisited(int node);

	public abstract ArrayList<Integer> path();

	// path expanding

	public abstract Path<N> moveTo(int to);

	public abstract Path<N> adjust();

	// intersection

	public abstract int nIntersections(Path<N> p);

	public abstract boolean intersects(Path<N> p);

}